Логистическая регрессия

Интересным развитием линейных регрессионых моделей является логистическая регрессия. Модель часто используется в медицине, банковской кредитной деятельности для предсказания вероятности возникновения некоторого события из двух возможных(болен,не болен или выдавать кредит или не выдавать).Логистическая регрессия применяется для предсказания вероятности возникновения некоторого события по значениям множества признаков. Для этого вводится так называемая зависимая переменная y, принимающая лишь одно из двух значений — как правило, это числа 0 (событие не произошло) и 1 (событие произошло), и множество независимых переменных x_1,…x_{p}на основе значений которых требуется вычислить вероятность принятия того или иного значения зависимой переменной. Делается предположение о том, что вероятность наступления события y=1 равна: \[P[y=1|x]=f(z)\] где \[z=\beta_0+\beta_1x_1+...+\beta_{p}x_{p}\]

а \(f(z)\)-так называемая логистическая функция (также называемая логит-функцией):

\[f(z)=(1/(1+e^{-z}))\] Для подбора параметров \(\beta_0,\beta_1,...,\beta_{p}\) необходимо составить обучающую выборку, состоящую из наборов значений независимых переменных и соответствующих им значений зависимой переменной y. Формально, это множество пар \((x^1,y^1),...,(x^n,y^n)\), где \(x^{i}∈R^{p}\) - вектор значений независимых переменных, а \(y^{i}∈{0,1}\) соответствующее им значение \(y\). Каждая такая пара называется обучающим примером. Подбор параметров \(\beta_1,\beta_1,...,\beta_{p}\) осуществляется методом максимального правдоподобия.Логарифм функции правдоподобия в данном случае имеет вид: \[logL=\sum_{i=1}^ny^{i}log f(\beta^{T}x^{i})+(1-y^{i})log(1-f(\beta^{T}x^{i}))\] Для максимизации по параметрам \(\beta_0,\beta_1,...,\beta_{p}\) этой функции может быть применён, например, метод градиентного спуска. Напомню, что оценки максимального правдоподобия , вообще говоря, могут быть смещёнными, но являются состоятельными, асимптотически эффективными и асимптотически нормальными оценками. Асимптотическая нормальность означает, что \[\sqrt {n}(\hat{\beta}-\beta) \xrightarrow d N(0,\boldsymbol{I}^{-1}_{\infty})\]

Для проверки значимости модели часто используется критерий отношения правдоподобия. Пусть основная гипотеза \[H_0:\beta_0=0,\beta_1=0,...,\beta_{p}=0\] при альтернативе, что вектор \[\beta=(\beta_0,\beta_1,...,\beta_{p})\] отличен от нуля. Пусть \(l_0\)-значение логарифма функции правдоподобия при предположении справедливости гипотезы \(H_1\)\(l_1\)-при альтернативе, тогда статистика \[T=2(l_1-l_0)=2ln((L_1)/(L_0))\] при увеличении длины выборки стремится к \(χ^2\) распределению с \(p\) степенями свободы

Пример

В качестве данных для числового примера возьмем популярный набор данных о кредитовании в Германии, на котором исследователи в области кредитных рисков тестируют свои системы кредитного скоринга.В лекции эти данные взяты с сайта https://onlinecourses.science.psu.edu/stat857/node/215

Читатаем данные из csv файла

data<-read.csv("C:/ShurD/Alection/German_Credit.csv")
head(data)
##   Creditability Account.Balance Duration.of.Credit..month.
## 1             1               1                         18
## 2             1               1                          9
## 3             1               2                         12
## 4             1               1                         12
## 5             1               1                         12
## 6             1               1                         10
##   Payment.Status.of.Previous.Credit Purpose Credit.Amount
## 1                                 4       2          1049
## 2                                 4       0          2799
## 3                                 2       9           841
## 4                                 4       0          2122
## 5                                 4       0          2171
## 6                                 4       0          2241
##   Value.Savings.Stocks Length.of.current.employment Instalment.per.cent
## 1                    1                            2                   4
## 2                    1                            3                   2
## 3                    2                            4                   2
## 4                    1                            3                   3
## 5                    1                            3                   4
## 6                    1                            2                   1
##   Sex...Marital.Status Guarantors Duration.in.Current.address
## 1                    2          1                           4
## 2                    3          1                           2
## 3                    2          1                           4
## 4                    3          1                           2
## 5                    3          1                           4
## 6                    3          1                           3
##   Most.valuable.available.asset Age..years. Concurrent.Credits
## 1                             2          21                  3
## 2                             1          36                  3
## 3                             1          23                  3
## 4                             1          39                  3
## 5                             2          38                  1
## 6                             1          48                  3
##   Type.of.apartment No.of.Credits.at.this.Bank Occupation No.of.dependents
## 1                 1                          1          3                1
## 2                 1                          2          3                2
## 3                 1                          1          2                1
## 4                 1                          2          2                2
## 5                 2                          2          2                1
## 6                 1                          2          2                2
##   Telephone Foreign.Worker
## 1         1              1
## 2         1              1
## 3         1              1
## 4         1              2
## 5         1              2
## 6         1              2

Всего 1000 наблюдений. Разделим выборку на две части случайным образом. В первую случайно поместим 60% наблюдений - это будет обучающая выборка. Вторая случайная выборка содержит 40% наблюдений - это будет выборка для тестирования.

d = sort(sample(nrow(data), nrow(data)*.6))
#select training sample
train<-data[d,]
test<-data[-d,]

К обучающей выборке подгоним модель логистической регрессии.

train<-subset(train)
m<-glm(train$Creditability~.,data=train,family=binomial())
summary(m)
## 
## Call:
## glm(formula = train$Creditability ~ ., family = binomial(), data = train)
## 
## Deviance Residuals: 
##     Min       1Q   Median       3Q      Max  
## -2.5108  -0.7947   0.4424   0.7362   1.8419  
## 
## Coefficients:
##                                     Estimate Std. Error z value Pr(>|z|)
## (Intercept)                       -3.637e+00  1.300e+00  -2.798  0.00514
## Account.Balance                    6.107e-01  9.142e-02   6.680 2.38e-11
## Duration.of.Credit..month.        -1.503e-02  1.118e-02  -1.345  0.17869
## Payment.Status.of.Previous.Credit  2.896e-01  1.166e-01   2.483  0.01304
## Purpose                            5.725e-02  3.896e-02   1.470  0.14163
## Credit.Amount                     -8.933e-05  5.206e-05  -1.716  0.08615
## Value.Savings.Stocks               1.791e-01  7.357e-02   2.434  0.01493
## Length.of.current.employment       1.433e-01  9.066e-02   1.581  0.11392
## Instalment.per.cent               -3.299e-01  1.089e-01  -3.029  0.00245
## Sex...Marital.Status               5.131e-01  1.566e-01   3.276  0.00105
## Guarantors                         3.683e-01  2.468e-01   1.492  0.13569
## Duration.in.Current.address       -8.658e-03  1.021e-01  -0.085  0.93244
## Most.valuable.available.asset     -2.468e-01  1.219e-01  -2.024  0.04301
## Age..years.                        1.048e-02  1.046e-02   1.001  0.31675
## Concurrent.Credits                 2.037e-01  1.434e-01   1.421  0.15534
## Type.of.apartment                  1.678e-01  2.224e-01   0.755  0.45050
## No.of.Credits.at.this.Bank        -4.284e-01  2.175e-01  -1.970  0.04885
## Occupation                        -9.807e-02  1.749e-01  -0.561  0.57495
## No.of.dependents                  -9.264e-02  2.921e-01  -0.317  0.75111
## Telephone                          5.613e-01  2.472e-01   2.270  0.02320
## Foreign.Worker                     7.393e-01  7.457e-01   0.991  0.32146
##                                      
## (Intercept)                       ** 
## Account.Balance                   ***
## Duration.of.Credit..month.           
## Payment.Status.of.Previous.Credit *  
## Purpose                              
## Credit.Amount                     .  
## Value.Savings.Stocks              *  
## Length.of.current.employment         
## Instalment.per.cent               ** 
## Sex...Marital.Status              ** 
## Guarantors                           
## Duration.in.Current.address          
## Most.valuable.available.asset     *  
## Age..years.                          
## Concurrent.Credits                   
## Type.of.apartment                    
## No.of.Credits.at.this.Bank        *  
## Occupation                           
## No.of.dependents                     
## Telephone                         *  
## Foreign.Worker                       
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## (Dispersion parameter for binomial family taken to be 1)
## 
##     Null deviance: 738.05  on 599  degrees of freedom
## Residual deviance: 577.90  on 579  degrees of freedom
## AIC: 619.9
## 
## Number of Fisher Scoring iterations: 5

О важности того или иного показателя информация уже получена. Но исследователи настоятельно предлагают сделать пошаговую регрессию, когда один или несколько с точки зрения p-значений менее значимых показателей исключается из модели, и затем происходит переоценка модели заново, но уже без исключенных показателей. По результатам оценки выясняется правильно или нет исключены эти параметры.

m <- step(m)
## Start:  AIC=619.9
## train$Creditability ~ Account.Balance + Duration.of.Credit..month. + 
##     Payment.Status.of.Previous.Credit + Purpose + Credit.Amount + 
##     Value.Savings.Stocks + Length.of.current.employment + Instalment.per.cent + 
##     Sex...Marital.Status + Guarantors + Duration.in.Current.address + 
##     Most.valuable.available.asset + Age..years. + Concurrent.Credits + 
##     Type.of.apartment + No.of.Credits.at.this.Bank + Occupation + 
##     No.of.dependents + Telephone + Foreign.Worker
## 
##                                     Df Deviance    AIC
## - Duration.in.Current.address        1   577.91 617.91
## - No.of.dependents                   1   578.00 618.00
## - Occupation                         1   578.21 618.21
## - Type.of.apartment                  1   578.47 618.47
## - Age..years.                        1   578.91 618.91
## - Foreign.Worker                     1   578.97 618.97
## - Duration.of.Credit..month.         1   579.70 619.70
## - Concurrent.Credits                 1   579.90 619.90
## <none>                                   577.90 619.90
## - Purpose                            1   580.10 620.10
## - Guarantors                         1   580.27 620.27
## - Length.of.current.employment       1   580.39 620.39
## - Credit.Amount                      1   580.84 620.84
## - No.of.Credits.at.this.Bank         1   581.85 621.85
## - Most.valuable.available.asset      1   582.05 622.05
## - Telephone                          1   583.17 623.17
## - Value.Savings.Stocks               1   584.07 624.07
## - Payment.Status.of.Previous.Credit  1   584.25 624.25
## - Instalment.per.cent                1   587.44 627.44
## - Sex...Marital.Status               1   588.94 628.94
## - Account.Balance                    1   627.42 667.42
## 
## Step:  AIC=617.91
## train$Creditability ~ Account.Balance + Duration.of.Credit..month. + 
##     Payment.Status.of.Previous.Credit + Purpose + Credit.Amount + 
##     Value.Savings.Stocks + Length.of.current.employment + Instalment.per.cent + 
##     Sex...Marital.Status + Guarantors + Most.valuable.available.asset + 
##     Age..years. + Concurrent.Credits + Type.of.apartment + No.of.Credits.at.this.Bank + 
##     Occupation + No.of.dependents + Telephone + Foreign.Worker
## 
##                                     Df Deviance    AIC
## - No.of.dependents                   1   578.01 616.01
## - Occupation                         1   578.21 616.21
## - Type.of.apartment                  1   578.49 616.49
## - Age..years.                        1   578.92 616.92
## - Foreign.Worker                     1   578.98 616.98
## - Duration.of.Credit..month.         1   579.73 617.73
## - Concurrent.Credits                 1   579.90 617.90
## <none>                                   577.91 617.91
## - Purpose                            1   580.12 618.12
## - Guarantors                         1   580.27 618.27
## - Length.of.current.employment       1   580.41 618.41
## - Credit.Amount                      1   580.84 618.84
## - No.of.Credits.at.this.Bank         1   581.94 619.94
## - Most.valuable.available.asset      1   582.26 620.26
## - Telephone                          1   583.17 621.17
## - Value.Savings.Stocks               1   584.09 622.09
## - Payment.Status.of.Previous.Credit  1   584.26 622.26
## - Instalment.per.cent                1   587.44 625.44
## - Sex...Marital.Status               1   588.96 626.96
## - Account.Balance                    1   627.86 665.86
## 
## Step:  AIC=616.01
## train$Creditability ~ Account.Balance + Duration.of.Credit..month. + 
##     Payment.Status.of.Previous.Credit + Purpose + Credit.Amount + 
##     Value.Savings.Stocks + Length.of.current.employment + Instalment.per.cent + 
##     Sex...Marital.Status + Guarantors + Most.valuable.available.asset + 
##     Age..years. + Concurrent.Credits + Type.of.apartment + No.of.Credits.at.this.Bank + 
##     Occupation + Telephone + Foreign.Worker
## 
##                                     Df Deviance    AIC
## - Occupation                         1   578.29 614.29
## - Type.of.apartment                  1   578.56 614.56
## - Age..years.                        1   578.99 614.99
## - Foreign.Worker                     1   579.08 615.08
## - Duration.of.Credit..month.         1   579.79 615.79
## <none>                                   578.01 616.01
## - Concurrent.Credits                 1   580.08 616.08
## - Purpose                            1   580.28 616.28
## - Guarantors                         1   580.33 616.33
## - Length.of.current.employment       1   580.45 616.45
## - Credit.Amount                      1   580.94 616.94
## - No.of.Credits.at.this.Bank         1   582.20 618.20
## - Most.valuable.available.asset      1   582.43 618.43
## - Telephone                          1   583.24 619.24
## - Value.Savings.Stocks               1   584.13 620.13
## - Payment.Status.of.Previous.Credit  1   584.50 620.50
## - Instalment.per.cent                1   587.44 623.44
## - Sex...Marital.Status               1   588.98 624.98
## - Account.Balance                    1   627.99 663.99
## 
## Step:  AIC=614.29
## train$Creditability ~ Account.Balance + Duration.of.Credit..month. + 
##     Payment.Status.of.Previous.Credit + Purpose + Credit.Amount + 
##     Value.Savings.Stocks + Length.of.current.employment + Instalment.per.cent + 
##     Sex...Marital.Status + Guarantors + Most.valuable.available.asset + 
##     Age..years. + Concurrent.Credits + Type.of.apartment + No.of.Credits.at.this.Bank + 
##     Telephone + Foreign.Worker
## 
##                                     Df Deviance    AIC
## - Type.of.apartment                  1   578.87 612.87
## - Foreign.Worker                     1   579.36 613.36
## - Age..years.                        1   579.36 613.36
## - Duration.of.Credit..month.         1   580.04 614.04
## <none>                                   578.29 614.29
## - Concurrent.Credits                 1   580.33 614.33
## - Length.of.current.employment       1   580.55 614.55
## - Purpose                            1   580.68 614.68
## - Guarantors                         1   580.69 614.69
## - Credit.Amount                      1   581.69 615.69
## - No.of.Credits.at.this.Bank         1   582.39 616.39
## - Telephone                          1   583.27 617.27
## - Most.valuable.available.asset      1   583.29 617.29
## - Value.Savings.Stocks               1   584.64 618.64
## - Payment.Status.of.Previous.Credit  1   584.80 618.80
## - Instalment.per.cent                1   588.60 622.60
## - Sex...Marital.Status               1   589.30 623.30
## - Account.Balance                    1   627.99 661.99
## 
## Step:  AIC=612.87
## train$Creditability ~ Account.Balance + Duration.of.Credit..month. + 
##     Payment.Status.of.Previous.Credit + Purpose + Credit.Amount + 
##     Value.Savings.Stocks + Length.of.current.employment + Instalment.per.cent + 
##     Sex...Marital.Status + Guarantors + Most.valuable.available.asset + 
##     Age..years. + Concurrent.Credits + No.of.Credits.at.this.Bank + 
##     Telephone + Foreign.Worker
## 
##                                     Df Deviance    AIC
## - Foreign.Worker                     1   579.94 611.94
## - Duration.of.Credit..month.         1   580.55 612.55
## - Age..years.                        1   580.63 612.63
## - Concurrent.Credits                 1   580.70 612.70
## <none>                                   578.87 612.87
## - Length.of.current.employment       1   581.09 613.09
## - Purpose                            1   581.16 613.16
## - Guarantors                         1   581.25 613.25
## - Credit.Amount                      1   582.20 614.20
## - No.of.Credits.at.this.Bank         1   583.19 615.19
## - Most.valuable.available.asset      1   583.29 615.29
## - Telephone                          1   583.85 615.85
## - Value.Savings.Stocks               1   585.18 617.18
## - Payment.Status.of.Previous.Credit  1   585.57 617.57
## - Instalment.per.cent                1   588.86 620.86
## - Sex...Marital.Status               1   590.65 622.65
## - Account.Balance                    1   629.19 661.19
## 
## Step:  AIC=611.94
## train$Creditability ~ Account.Balance + Duration.of.Credit..month. + 
##     Payment.Status.of.Previous.Credit + Purpose + Credit.Amount + 
##     Value.Savings.Stocks + Length.of.current.employment + Instalment.per.cent + 
##     Sex...Marital.Status + Guarantors + Most.valuable.available.asset + 
##     Age..years. + Concurrent.Credits + No.of.Credits.at.this.Bank + 
##     Telephone
## 
##                                     Df Deviance    AIC
## - Age..years.                        1   581.66 611.66
## - Concurrent.Credits                 1   581.70 611.70
## - Duration.of.Credit..month.         1   581.83 611.83
## <none>                                   579.94 611.94
## - Purpose                            1   582.14 612.14
## - Length.of.current.employment       1   582.23 612.23
## - Guarantors                         1   582.79 612.79
## - Credit.Amount                      1   582.91 612.91
## - No.of.Credits.at.this.Bank         1   584.46 614.46
## - Telephone                          1   584.73 614.73
## - Most.valuable.available.asset      1   584.91 614.91
## - Value.Savings.Stocks               1   586.25 616.25
## - Payment.Status.of.Previous.Credit  1   586.73 616.73
## - Instalment.per.cent                1   590.46 620.46
## - Sex...Marital.Status               1   592.04 622.04
## - Account.Balance                    1   629.60 659.60
## 
## Step:  AIC=611.66
## train$Creditability ~ Account.Balance + Duration.of.Credit..month. + 
##     Payment.Status.of.Previous.Credit + Purpose + Credit.Amount + 
##     Value.Savings.Stocks + Length.of.current.employment + Instalment.per.cent + 
##     Sex...Marital.Status + Guarantors + Most.valuable.available.asset + 
##     Concurrent.Credits + No.of.Credits.at.this.Bank + Telephone
## 
##                                     Df Deviance    AIC
## - Concurrent.Credits                 1   583.21 611.21
## <none>                                   581.66 611.66
## - Duration.of.Credit..month.         1   583.77 611.77
## - Purpose                            1   583.80 611.80
## - Credit.Amount                      1   584.64 612.64
## - Guarantors                         1   584.78 612.78
## - Length.of.current.employment       1   585.38 613.38
## - No.of.Credits.at.this.Bank         1   585.79 613.79
## - Most.valuable.available.asset      1   586.05 614.05
## - Telephone                          1   587.09 615.09
## - Value.Savings.Stocks               1   588.22 616.22
## - Payment.Status.of.Previous.Credit  1   588.89 616.89
## - Instalment.per.cent                1   591.72 619.72
## - Sex...Marital.Status               1   593.55 621.55
## - Account.Balance                    1   630.79 658.79
## 
## Step:  AIC=611.21
## train$Creditability ~ Account.Balance + Duration.of.Credit..month. + 
##     Payment.Status.of.Previous.Credit + Purpose + Credit.Amount + 
##     Value.Savings.Stocks + Length.of.current.employment + Instalment.per.cent + 
##     Sex...Marital.Status + Guarantors + Most.valuable.available.asset + 
##     No.of.Credits.at.this.Bank + Telephone
## 
##                                     Df Deviance    AIC
## - Purpose                            1   584.93 610.93
## <none>                                   583.21 611.21
## - Duration.of.Credit..month.         1   585.41 611.41
## - Credit.Amount                      1   586.01 612.01
## - Guarantors                         1   586.36 612.36
## - Length.of.current.employment       1   586.85 612.85
## - Most.valuable.available.asset      1   588.02 614.02
## - No.of.Credits.at.this.Bank         1   588.09 614.09
## - Telephone                          1   588.30 614.30
## - Value.Savings.Stocks               1   589.51 615.51
## - Payment.Status.of.Previous.Credit  1   592.48 618.48
## - Instalment.per.cent                1   593.08 619.08
## - Sex...Marital.Status               1   594.67 620.67
## - Account.Balance                    1   632.37 658.37
## 
## Step:  AIC=610.93
## train$Creditability ~ Account.Balance + Duration.of.Credit..month. + 
##     Payment.Status.of.Previous.Credit + Credit.Amount + Value.Savings.Stocks + 
##     Length.of.current.employment + Instalment.per.cent + Sex...Marital.Status + 
##     Guarantors + Most.valuable.available.asset + No.of.Credits.at.this.Bank + 
##     Telephone
## 
##                                     Df Deviance    AIC
## - Duration.of.Credit..month.         1   586.71 610.71
## <none>                                   584.93 610.93
## - Credit.Amount                      1   587.92 611.92
## - Guarantors                         1   588.22 612.22
## - Length.of.current.employment       1   588.73 612.73
## - No.of.Credits.at.this.Bank         1   589.12 613.12
## - Most.valuable.available.asset      1   589.59 613.59
## - Telephone                          1   590.27 614.27
## - Value.Savings.Stocks               1   591.34 615.34
## - Payment.Status.of.Previous.Credit  1   593.22 617.22
## - Instalment.per.cent                1   594.71 618.71
## - Sex...Marital.Status               1   596.44 620.44
## - Account.Balance                    1   636.47 660.47
## 
## Step:  AIC=610.71
## train$Creditability ~ Account.Balance + Payment.Status.of.Previous.Credit + 
##     Credit.Amount + Value.Savings.Stocks + Length.of.current.employment + 
##     Instalment.per.cent + Sex...Marital.Status + Guarantors + 
##     Most.valuable.available.asset + No.of.Credits.at.this.Bank + 
##     Telephone
## 
##                                     Df Deviance    AIC
## <none>                                   586.71 610.71
## - Guarantors                         1   589.95 611.95
## - Length.of.current.employment       1   590.28 612.28
## - No.of.Credits.at.this.Bank         1   590.66 612.66
## - Telephone                          1   592.78 614.78
## - Most.valuable.available.asset      1   592.82 614.82
## - Value.Savings.Stocks               1   593.23 615.23
## - Payment.Status.of.Previous.Credit  1   595.09 617.09
## - Credit.Amount                      1   597.31 619.31
## - Sex...Marital.Status               1   597.92 619.92
## - Instalment.per.cent                1   599.73 621.73
## - Account.Balance                    1   638.81 660.81

В результате останутся только самые значимые праметры.

summary(m)
## 
## Call:
## glm(formula = train$Creditability ~ Account.Balance + Payment.Status.of.Previous.Credit + 
##     Credit.Amount + Value.Savings.Stocks + Length.of.current.employment + 
##     Instalment.per.cent + Sex...Marital.Status + Guarantors + 
##     Most.valuable.available.asset + No.of.Credits.at.this.Bank + 
##     Telephone, family = binomial(), data = train)
## 
## Deviance Residuals: 
##     Min       1Q   Median       3Q      Max  
## -2.5045  -0.8130   0.4661   0.7608   1.7557  
## 
## Coefficients:
##                                     Estimate Std. Error z value Pr(>|z|)
## (Intercept)                       -2.167e+00  7.605e-01  -2.850 0.004374
## Account.Balance                    6.129e-01  8.946e-02   6.851 7.33e-12
## Payment.Status.of.Previous.Credit  3.158e-01  1.110e-01   2.845 0.004441
## Credit.Amount                     -1.299e-04  4.029e-05  -3.224 0.001265
## Value.Savings.Stocks               1.798e-01  7.193e-02   2.500 0.012409
## Length.of.current.employment       1.596e-01  8.454e-02   1.888 0.059000
## Instalment.per.cent               -3.582e-01  1.019e-01  -3.515 0.000439
## Sex...Marital.Status               5.035e-01  1.524e-01   3.304 0.000955
## Guarantors                         4.195e-01  2.418e-01   1.735 0.082819
## Most.valuable.available.asset     -2.607e-01  1.059e-01  -2.461 0.013848
## No.of.Credits.at.this.Bank        -4.067e-01  2.059e-01  -1.975 0.048276
## Telephone                          5.602e-01  2.301e-01   2.435 0.014905
##                                      
## (Intercept)                       ** 
## Account.Balance                   ***
## Payment.Status.of.Previous.Credit ** 
## Credit.Amount                     ** 
## Value.Savings.Stocks              *  
## Length.of.current.employment      .  
## Instalment.per.cent               ***
## Sex...Marital.Status              ***
## Guarantors                        .  
## Most.valuable.available.asset     *  
## No.of.Credits.at.this.Bank        *  
## Telephone                         *  
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## (Dispersion parameter for binomial family taken to be 1)
## 
##     Null deviance: 738.05  on 599  degrees of freedom
## Residual deviance: 586.71  on 588  degrees of freedom
## AIC: 610.71
## 
## Number of Fisher Scoring iterations: 5

Посмотрим на прогнозы вероятностей выдачи кредита для тестовой выборки. и сравним с результатами выдачи кредита в тестовой выборке Для этого понадобится библтиотека ROCR

library(ROCR)
## Loading required package: gplots
## 
## Attaching package: 'gplots'
## The following object is masked from 'package:stats':
## 
##     lowess
test$score<-predict(m,type='response',test)
pred<-prediction(test$score,test$Creditability)
t1 <- cbind(test$Creditability,test$score)
matplot(t1, col = c("blue","magenta"),pch= "*", type = "p")

Некоторые полезные статистики.

Обозначим через + и - положительный и отрицательный класс соответственно. Будем в использовать следующие обозначения для эмпирических квантилей: \(P (\# положительных-значений)\), \(N (\# негативных-значений)\), \(TP (\# верных-положительных)\), \(TN (\# верных-негативных)\), \(FP (\# ложных- положительных)\), \(FN (\# ложных-негативных)\).

\((FP+FN)/(P+N)\) - рейт ошибки

\(fpr = P(\tilde{Y} = + | Y = -) = FP/N\)- ложный положительный рейт

\(tpr = P(\tilde{Y} = + | Y = +) = ТP/P\)- верный положительный рейт

\(fnr = P(\tilde{Y} = - | Y = +) = FN/P\) -ложный негативны рейт

\(tnr = P(\tilde{Y} = - | Y = -) = ТN/N\)- верный негативный рейт

Посмотрим, например, как меняется tpr относительно fpr

perf <- performance(pred,"tpr","fpr")
plot(perf)

Оптимальная граница для отсечения \(KS\) выдать кредит -не выдать кредит
это максимум разности между накопленной верным положительным решением - неверным положительным

max(attr(perf,'y.values')[[1]]-attr(perf,'x.values')[[1]])
## [1] 0.4326357

Интересно также посмотреть 3 наиболее важные причины, повлиявшие на решение по кредиту для каждого из тестируемой выборки

g<-predict(m,type='terms',test)
ftopk<- function(x,top=3){
res=names(x)[order(x, decreasing = TRUE)][1:top]
paste(res,collapse=";",sep="")
}
topk=apply(g,1,ftopk,top=3)
head(topk)
##                                                                                     5 
##                "Payment.Status.of.Previous.Credit;Sex...Marital.Status;Credit.Amount" 
##                                                                                     6 
## "Instalment.per.cent;Payment.Status.of.Previous.Credit;Most.valuable.available.asset" 
##                                                                                     8 
## "Payment.Status.of.Previous.Credit;Most.valuable.available.asset;Instalment.per.cent" 
##                                                                                     9 
##                     "Account.Balance;Payment.Status.of.Previous.Credit;Credit.Amount" 
##                                                                                    10 
##                 "Instalment.per.cent;No.of.Credits.at.this.Bank;Value.Savings.Stocks" 
##                                                                                    11 
## "Payment.Status.of.Previous.Credit;Most.valuable.available.asset;Instalment.per.cent"